﻿// owner 蒋家伟

#pragma once
#include "Application_home.h"
#include "IArgs.h"

namespace jsdk
{
    enum class ApplicationStatus : int
    {
        Undefined = 0,
        BeforeCreate = 1,   // 此时App对象并不存在，还没有初始化。此时不应该做Qt对象的初始化等等。
        AfterCreate = 2,    // 是指Appliaction 创建之后会立刻发出的事件，表明App对象已经准备好了，可以进行窗口的初始化等等。
        AfterStart = 3,     // 调用了Start 之后的事件, 接下来要进入主事件循环了。
        BeforeClose = 4     // 主事件循环结束,程序完全退出之前
    };

    class APPLICATION_EXPORT IApplicationEventArgs : public IArgs
    {
        DEFINE_DRIVER_FROM(IApplicationEventArgs, IArgs)
    public:
        virtual ~IApplicationEventArgs() {}

        /// \ brief 获取当前事件的状态
        /// \ return ApplicationStatus
        virtual ApplicationStatus getApplicationStatus() const = 0;
    };
}
